On Wed 15-01-20 13:00:59, jeffm@xxxxxxxx wrote: > From: Jeff Mahoney <jeffm@xxxxxxxx> > > Commit 60e4cf67a58 (reiserfs: fix extended attributes on the root > directory) introduced a regression open_xa_root started returning > -EOPNOTSUPP but it was not handled properly in reiserfs_for_each_xattr. > > When the reiserfs module is built without CONFIG_REISERFS_FS_XATTR, > deleting an inode would result in a warning and chowning an inode > would also result in a warning and then fail to complete. > > With CONFIG_REISERFS_FS_XATTR enabled, the xattr root would always be > present for read-write operations. > > This commit handles -EOPNOSUPP in the same way -ENODATA is handled. > > Fixes: 60e4cf67a58 (reiserfs: fix extended attributes on the root directory) > Reported-by: Michael Brunnbauer <brunni@xxxxxxxxxxxx> > Signed-off-by: Jeff Mahoney <jeffm@xxxxxxxx> Thanks Jeff! I've queued the patch to my tree and will push it to Linus next week. Honza > --- > fs/reiserfs/xattr.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c > index 06497965f0a0..d843c4789ced 100644 > --- a/fs/reiserfs/xattr.c > +++ b/fs/reiserfs/xattr.c > @@ -319,8 +319,12 @@ static int reiserfs_for_each_xattr(struct inode *inode, > out_dir: > dput(dir); > out: > - /* -ENODATA isn't an error */ > - if (err == -ENODATA) > + /* > + * -ENODATA: this object doesn't have any xattrs > + * -EOPNOTSUPP: this file system doesn't have xattrs enabled on disk. > + * Neither are errors > + */ > + if (err == -ENODATA || err == -EOPNOTSUPP) > err = 0; > return err; > } > -- > 2.16.4 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR