[Ocfs2-devel] [PATCH] ocfs2/xattr: Restore not_found in xis.
Tiger Yang
tiger.yang at oracle.com
Wed Nov 19 06:25:00 PST 2008
how quickly you solve this problem! I also found this problem with my
test script but forgot to tell you when you address the first problem.
thanks,
tiger
Tao Ma wrote:
> In xattr set, when we move a xattr which was stored in inode to
> the outside bucket, we have to delete it and it will use the old
> "xis->not_found", but it is removed by the ocfs2_calc_xattr_set_need.
> So restore it.
>
> Signed-off-by: Tao Ma <tao.ma at oracle.com>
> ---
> fs/ocfs2/xattr.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
> index 1504c6b..7d6307f 100644
> --- a/fs/ocfs2/xattr.c
> +++ b/fs/ocfs2/xattr.c
> @@ -2414,7 +2414,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
> struct ocfs2_xattr_search *xbs,
> struct ocfs2_xattr_set_ctxt *ctxt)
> {
> - int ret = 0, credits;
> + int ret = 0, credits, old_found;
>
> if (!xi->value) {
> /* Remove existing extended attribute */
> @@ -2433,6 +2433,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
> xi->value = NULL;
> xi->value_len = 0;
>
> + old_found = xis->not_found;
> xis->not_found = -ENODATA;
> ret = ocfs2_calc_xattr_set_need(inode,
> di,
> @@ -2442,6 +2443,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
> NULL,
> NULL,
> &credits);
> + xis->not_found = old_found;
> if (ret) {
> mlog_errno(ret);
> goto out;
> @@ -2462,6 +2464,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
> if (ret)
> goto out;
>
> + old_found = xis->not_found;
> xis->not_found = -ENODATA;
> ret = ocfs2_calc_xattr_set_need(inode,
> di,
> @@ -2471,6 +2474,7 @@ static int __ocfs2_xattr_set_handle(struct inode *inode,
> NULL,
> NULL,
> &credits);
> + xis->not_found = old_found;
> if (ret) {
> mlog_errno(ret);
> goto out;
More information about the Ocfs2-devel
mailing list