mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 04:01:48 -04:00
vfs: make it possible to access the dentry hash/len as one 64-bit entry
This allows comparing hash and len in one operation on 64-bit
architectures. Right now only __d_lookup_rcu() takes advantage of this,
since that is the case we care most about.
The use of anonymous struct/unions hides the alternate 64-bit approach
from most users, the exception being a few cases where we initialize a
'struct qstr' with a static initializer. This makes the problematic
cases use a new QSTR_INIT() helper function for that (but initializing
just the name pointer with a "{ .name = xyzzy }" initializer remains
valid, as does just copying another qstr structure).
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
ee983e8967
commit
26fe575028
18 changed files with 44 additions and 48 deletions
|
|
@ -2361,7 +2361,7 @@ int ubifs_tnc_add_nm(struct ubifs_info *c, const union ubifs_key *key,
|
|||
* by passing 'ubifs_tnc_remove_nm()' the same key but
|
||||
* an unmatchable name.
|
||||
*/
|
||||
struct qstr noname = { .len = 0, .name = "" };
|
||||
struct qstr noname = { .name = "" };
|
||||
|
||||
err = dbg_check_tnc(c, 0);
|
||||
mutex_unlock(&c->tnc_mutex);
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ int ubifs_setxattr(struct dentry *dentry, const char *name,
|
|||
{
|
||||
struct inode *inode, *host = dentry->d_inode;
|
||||
struct ubifs_info *c = host->i_sb->s_fs_info;
|
||||
struct qstr nm = { .name = name, .len = strlen(name) };
|
||||
struct qstr nm = QSTR_INIT(name, strlen(name));
|
||||
struct ubifs_dent_node *xent;
|
||||
union ubifs_key key;
|
||||
int err, type;
|
||||
|
|
@ -361,7 +361,7 @@ ssize_t ubifs_getxattr(struct dentry *dentry, const char *name, void *buf,
|
|||
{
|
||||
struct inode *inode, *host = dentry->d_inode;
|
||||
struct ubifs_info *c = host->i_sb->s_fs_info;
|
||||
struct qstr nm = { .name = name, .len = strlen(name) };
|
||||
struct qstr nm = QSTR_INIT(name, strlen(name));
|
||||
struct ubifs_inode *ui;
|
||||
struct ubifs_dent_node *xent;
|
||||
union ubifs_key key;
|
||||
|
|
@ -524,7 +524,7 @@ int ubifs_removexattr(struct dentry *dentry, const char *name)
|
|||
{
|
||||
struct inode *inode, *host = dentry->d_inode;
|
||||
struct ubifs_info *c = host->i_sb->s_fs_info;
|
||||
struct qstr nm = { .name = name, .len = strlen(name) };
|
||||
struct qstr nm = QSTR_INIT(name, strlen(name));
|
||||
struct ubifs_dent_node *xent;
|
||||
union ubifs_key key;
|
||||
int err;
|
||||
|
|
|
|||
Loading…
Reference in a new issue