|
@@ -173,7 +173,7 @@ __dcache_find_get_entry(struct dentry *parent, u64 idx,
|
|
|
* the MDS if/when the directory is modified).
|
|
|
*/
|
|
|
static int __dcache_readdir(struct file *file, struct dir_context *ctx,
|
|
|
- u32 shared_gen)
|
|
|
+ int shared_gen)
|
|
|
{
|
|
|
struct ceph_file_info *fi = file->private_data;
|
|
|
struct dentry *parent = file->f_path.dentry;
|
|
@@ -184,7 +184,7 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
|
|
|
u64 idx = 0;
|
|
|
int err = 0;
|
|
|
|
|
|
- dout("__dcache_readdir %p v%u at %llx\n", dir, shared_gen, ctx->pos);
|
|
|
+ dout("__dcache_readdir %p v%u at %llx\n", dir, (unsigned)shared_gen, ctx->pos);
|
|
|
|
|
|
/* search start position */
|
|
|
if (ctx->pos > 2) {
|
|
@@ -333,7 +333,7 @@ static int ceph_readdir(struct file *file, struct dir_context *ctx)
|
|
|
ceph_snap(inode) != CEPH_SNAPDIR &&
|
|
|
__ceph_dir_is_complete_ordered(ci) &&
|
|
|
__ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1)) {
|
|
|
- u32 shared_gen = ci->i_shared_gen;
|
|
|
+ int shared_gen = atomic_read(&ci->i_shared_gen);
|
|
|
spin_unlock(&ci->i_ceph_lock);
|
|
|
err = __dcache_readdir(file, ctx, shared_gen);
|
|
|
if (err != -EAGAIN)
|
|
@@ -751,7 +751,7 @@ static struct dentry *ceph_lookup(struct inode *dir, struct dentry *dentry,
|
|
|
spin_unlock(&ci->i_ceph_lock);
|
|
|
dout(" dir %p complete, -ENOENT\n", dir);
|
|
|
d_add(dentry, NULL);
|
|
|
- di->lease_shared_gen = ci->i_shared_gen;
|
|
|
+ di->lease_shared_gen = atomic_read(&ci->i_shared_gen);
|
|
|
return NULL;
|
|
|
}
|
|
|
spin_unlock(&ci->i_ceph_lock);
|
|
@@ -1191,12 +1191,12 @@ static int dir_lease_is_valid(struct inode *dir, struct dentry *dentry)
|
|
|
int valid = 0;
|
|
|
|
|
|
spin_lock(&ci->i_ceph_lock);
|
|
|
- if (ci->i_shared_gen == di->lease_shared_gen)
|
|
|
+ if (atomic_read(&ci->i_shared_gen) == di->lease_shared_gen)
|
|
|
valid = __ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1);
|
|
|
spin_unlock(&ci->i_ceph_lock);
|
|
|
dout("dir_lease_is_valid dir %p v%u dentry %p v%u = %d\n",
|
|
|
- dir, (unsigned)ci->i_shared_gen, dentry,
|
|
|
- (unsigned)di->lease_shared_gen, valid);
|
|
|
+ dir, (unsigned)atomic_read(&ci->i_shared_gen),
|
|
|
+ dentry, (unsigned)di->lease_shared_gen, valid);
|
|
|
return valid;
|
|
|
}
|
|
|
|