mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
bcachefs: Some project id fixes
Inode options that are accessible via the xattr interface are stored with a +1 bias, so that a value of 0 means unset. We weren't handling this consistently. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
ac7eef0318
commit
7af0cec307
@ -138,6 +138,10 @@ static int bch2_ioc_fssetxattr(struct bch_fs *c,
|
||||
if (fa.fsx_projid >= U32_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* inode fields accessible via the xattr interface are stored with a +1
|
||||
* bias, so that 0 means unset:
|
||||
*/
|
||||
s.projid = fa.fsx_projid + 1;
|
||||
|
||||
ret = mnt_want_write_file(file);
|
||||
@ -151,7 +155,7 @@ static int bch2_ioc_fssetxattr(struct bch_fs *c,
|
||||
}
|
||||
|
||||
mutex_lock(&inode->ei_update_lock);
|
||||
ret = bch2_set_projid(c, inode, s.projid);
|
||||
ret = bch2_set_projid(c, inode, fa.fsx_projid);
|
||||
if (ret)
|
||||
goto err_unlock;
|
||||
|
||||
|
@ -513,7 +513,11 @@ static int bch2_xattr_bcachefs_set(const struct xattr_handler *handler,
|
||||
|
||||
mutex_lock(&inode->ei_update_lock);
|
||||
if (inode_opt_id == Inode_opt_project) {
|
||||
ret = bch2_set_projid(c, inode, s.v);
|
||||
/*
|
||||
* inode fields accessible via the xattr interface are stored
|
||||
* with a +1 bias, so that 0 means unset:
|
||||
*/
|
||||
ret = bch2_set_projid(c, inode, s.v ? s.v - 1 : 0);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user