1170 dentry = lookup_one_len(PRIVROOT_NAME, s->s_root,
1171 strlen(PRIVROOT_NAME));
1172 if (!IS_ERR(dentry)) {
1173 if (!(mount_flags & MS_RDONLY) && !dentry->d_inode) {
1174 struct inode *inode = dentry->d_parent->d_inode;
1175 mutex_lock_nested(&inode->i_mutex,
1176 I_MUTEX_XATTR);
1177 err = inode->i_op->mkdir(inode, dentry, 0700);
1178 mutex_unlock(&inode->i_mutex);
1179 if (err) {
1180 dput(dentry);
1181 dentry = NULL;
1182 }
1183
1184 if (dentry && dentry->d_inode)
1185 reiserfs_warning(s,
1186 "Created %s on %s - reserved for "
1187 "xattr storage.",
1188 PRIVROOT_NAME,
1189 reiserfs_bdevname
1190 (inode->i_sb));
1191 } else if (!dentry->d_inode) {
1192 dput(dentry);
1193 dentry = NULL;
1194 }
1195 } else
1196 err = PTR_ERR(dentry);
1197
1198 if (!err && dentry) {
1199 s->s_root->d_op = &xattr_lookup_poison_ops;
1200 reiserfs_mark_inode_private(dentry->d_inode);
1201 REISERFS_SB(s)->priv_root = dentry;
1202 } else if (!(mount_flags & MS_RDONLY)) {
1203
1204
1205
1206 reiserfs_warning(s, "xattrs/ACLs enabled and couldn't "
1207 "find/create .reiserfs_priv. Failing mount.");
1208 err = -EOPNOTSUPP;
1209 }
1210 }