X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Freiserfs%2Fxattr_acl.c;h=b600930ffd8e4b44675de68c70de268051b56b35;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=623139f062d3fe51ab5d131d0b75d88335f384c2;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c index 623139f06..b600930ff 100644 --- a/fs/reiserfs/xattr_acl.c +++ b/fs/reiserfs/xattr_acl.c @@ -289,8 +289,14 @@ reiserfs_set_acl(struct inode *inode, int type, struct posix_acl *acl) error = reiserfs_xattr_set(inode, name, value, size, 0); } else { error = reiserfs_xattr_del (inode, name); - if (error == -ENODATA) + if (error == -ENODATA) { + /* This may seem odd here, but it means that the ACL was set + * with a value representable with mode bits. If there was + * an ACL before, reiserfs_xattr_del already dirtied the inode. + */ + mark_inode_dirty (inode); error = 0; + } } if (value) @@ -502,11 +508,11 @@ posix_acl_access_list (struct inode *inode, const char *name, int namelen, char } struct reiserfs_xattr_handler posix_acl_access_handler = { - prefix: XATTR_NAME_ACL_ACCESS, - get: posix_acl_access_get, - set: posix_acl_access_set, - del: posix_acl_access_del, - list: posix_acl_access_list, + .prefix = XATTR_NAME_ACL_ACCESS, + .get = posix_acl_access_get, + .set = posix_acl_access_set, + .del = posix_acl_access_del, + .list = posix_acl_access_list, }; static int @@ -555,9 +561,9 @@ posix_acl_default_list (struct inode *inode, const char *name, int namelen, char } struct reiserfs_xattr_handler posix_acl_default_handler = { - prefix: XATTR_NAME_ACL_DEFAULT, - get: posix_acl_default_get, - set: posix_acl_default_set, - del: posix_acl_default_del, - list: posix_acl_default_list, + .prefix = XATTR_NAME_ACL_DEFAULT, + .get = posix_acl_default_get, + .set = posix_acl_default_set, + .del = posix_acl_default_del, + .list = posix_acl_default_list, };