.. | .. |
---|
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; |
---|