|
Lines 77-90
ssize_t unionfs_getxattr(struct dentry *
|
Link Here
|
|---|
|
| |
encoded_value = (char *)value; | encoded_value = (char *)value; |
| |
down(&hidden_dentry->d_inode->i_sem); |
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->getxattr(hidden_dentry, | hidden_dentry->d_inode->i_op->getxattr(hidden_dentry, |
encoded_name, | encoded_name, |
encoded_value, size); | encoded_value, size); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
up(&hidden_dentry->d_inode->i_sem); |
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
| |
} | } |
| |
|
Lines 112-123
unionfs_setxattr(struct dentry *dentry,
|
Link Here
|
|---|
|
name, (unsigned long)size, flags); | name, (unsigned long)size, flags); |
| |
if (hidden_dentry->d_inode->i_op->setxattr) { | if (hidden_dentry->d_inode->i_op->setxattr) { |
down(&hidden_dentry->d_inode->i_sem); |
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = hidden_dentry->d_inode->i_op-> | err = hidden_dentry->d_inode->i_op-> |
setxattr(hidden_dentry, name, value, size, flags); | setxattr(hidden_dentry, name, value, size, flags); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
up(&hidden_dentry->d_inode->i_sem); |
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |
|
Lines 143-155
int unionfs_removexattr(struct dentry *d
|
Link Here
|
|---|
|
if (hidden_dentry->d_inode->i_op->removexattr) { | if (hidden_dentry->d_inode->i_op->removexattr) { |
encoded_name = (char *)name; | encoded_name = (char *)name; |
| |
down(&hidden_dentry->d_inode->i_sem); |
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->removexattr(hidden_dentry, | hidden_dentry->d_inode->i_op->removexattr(hidden_dentry, |
encoded_name); | encoded_name); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
up(&hidden_dentry->d_inode->i_sem); |
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |
|
Lines 173-185
ssize_t unionfs_listxattr(struct dentry
|
Link Here
|
|---|
|
| |
if (hidden_dentry->d_inode->i_op->listxattr) { | if (hidden_dentry->d_inode->i_op->listxattr) { |
encoded_list = list; | encoded_list = list; |
down(&hidden_dentry->d_inode->i_sem); |
mutex_lock(&hidden_dentry->d_inode->i_mutex); |
/* lock_kernel() already done by caller. */ | /* lock_kernel() already done by caller. */ |
err = | err = |
hidden_dentry->d_inode->i_op->listxattr(hidden_dentry, | hidden_dentry->d_inode->i_op->listxattr(hidden_dentry, |
encoded_list, size); | encoded_list, size); |
/* unlock_kernel() will be done by caller. */ | /* unlock_kernel() will be done by caller. */ |
up(&hidden_dentry->d_inode->i_sem); |
mutex_unlock(&hidden_dentry->d_inode->i_mutex); |
} | } |
| |
unlock_dentry(dentry); | unlock_dentry(dentry); |