Page cache accesses are serialised using page locks, whereas attribute
updates are serialised using inode->i_lock.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
attr.ia_mode = S_IFLNK | S_IRWXUGO;
attr.ia_valid = ATTR_MODE;
attr.ia_mode = S_IFLNK | S_IRWXUGO;
attr.ia_valid = ATTR_MODE;
page = alloc_page(GFP_HIGHUSER);
page = alloc_page(GFP_HIGHUSER);
- if (!page) {
- unlock_kernel();
kaddr = kmap_atomic(page, KM_USER0);
memcpy(kaddr, symname, pathlen);
kaddr = kmap_atomic(page, KM_USER0);
memcpy(kaddr, symname, pathlen);
dentry->d_name.name, symname, error);
d_drop(dentry);
__free_page(page);
dentry->d_name.name, symname, error);
d_drop(dentry);
__free_page(page);
} else
__free_page(page);
} else
__free_page(page);